<?php
/**
 * View_Profile
 *
 * Класс предназначен для отображения информации, связанной с профайлом
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Profile extends View_Base {
	
	/**
	 * Выводит меню профайла
	 * 
	 * @param User_User $objUser - Пользователь
	 * @param array $arrMenu - Данные по меню пользователя
	 */
	public function showProfileMenu(User_User $objUser, $arrMenu) {
		Service_Debug::setDebug();		
			//echo '<div id="userPhoto"><img src="http://www.gravatar.com/avatar/' . md5($objUser->getField('e_mail')) . '?s=101&d=' . urlencode('http://' . SITE_URL . W_IMAGES . 'user/uknown.jpg') .'" width="101px" alt="" /></div>';
			//echo '<div class="clear"></div>';	
			//echo '<nav><ul id="profileMenu">';
			//	foreach ($arrMenu as $arrLink) {
			//		echo '<li' . ((!empty($arrLink['is_selected'])) ? ' class="selected"' : null) . '><a href="' . $this->getLanguageUrl(W_ABSPATH . 'profile/' . $arrLink['url']) . '">' . $arrLink['name'] . '</a></li>';
			//	}
		//	echo '</ul></nav>';
	}

	/**
	 * Форма смены пароля
	 * 
	 */
	public function changePasswordForm(User_User $objUser) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array('id' => 'loginPageForm'), $objUser);
		$objForm->show();
   	  $objForm->passwordField(array('text' => Service_Translate::getText('Введите старый пароль'), 'maxlength' => '64', 'tabindex' => 1, 'class' => 'standardText bigSignIn'), 'pass');
   	  $objForm->passwordField(array('text' => Service_Translate::getText('Введите новый пароль'), 'maxlength' => '64', 'tabindex' => 2, 'class' => 'standardText bigSignIn'), 'new_pass');
   	  $objForm->passwordField(array('text' => Service_Translate::getText('Подтвердите новый пароль'), 'maxlength' => '64', 'tabindex' => 2, 'class' => 'standardText bigSignIn'), 'new_pass_confirmation');
		  $objForm->submitButton(array('value' => Service_Translate::getText('Сменить'), 'tabindex' => 4), 'enter');
		$objForm->close();
	}
	
	
	/**
	 * Выводит меню профайла
	 * 
	 */
	public function showProfile(User_User $objUser) {
		Service_Debug::setDebug();
		$language = Service_Translate::getLang();
		echo '<table cellspacing="0" id="profile">';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Имя') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('first_name') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Фамилия') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('last_name') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Электронная почта') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('e_mail') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Возраст') . ':</td>';
		    echo '<td class="right">' . ($objUser->getField('age') ? $objUser->getField('age') : null) . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Страна') . ':</td>';
		    echo '<td class="right">' . View_Country::getName($objUser->tableFields) . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Город') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('city') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Улица, дом, квартира') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('address') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Почтовый индекс') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('zip') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Телефон') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('home_phone') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Рабочий телефон') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('work_phone') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left">' . Service_Translate::getText('Префикс рабочего телефона') . ':</td>';
		    echo '<td class="right">' . $objUser->getField('work_phone_prefix') . '</td>';
		  echo '</tr>';
		  echo '<tr>';
		    echo '<td class="left"></td>';
		    echo '<td class="right"><a class="orangeButton" href="' . $this->getLanguageUrl(W_ABSPATH . 'profile/edit/') . '"><span>' . Service_Translate::getText('Изменить данные') . '</span></a></td>';
		  echo '</tr>';
		echo '</table>';
	}

		/**
	 * Выводит меню профайла
	 * 
	 */
	public function showProfileEditForm(User_User $objUser) {
		Service_Debug::setDebug();
		if($idCity = $objUser->getField('ID_city')) {
			$objCity = new City($idCity);
			$objUser->setField('city_string', $objCity->getField('city_name'));
		}
		
		$objForm = new Form_ViewForm(array('id' => 'profileEditForm', 'viewFormType' => 'div', 'leftWidth' => '190', 'fullWidth' => '380'), $objUser);
		$objForm->show();
			$objForm->textField(array('maxlength' => '64', 'text' => 'Имя', 'required' => true), 'first_name');
			$objForm->textField(array('maxlength' => '64', 'text' => 'Фамилия'), 'last_name');
			$objForm->textField(array('maxlength' => '20', 'text' => 'Телефон'), 'phone');
			$objForm->textField(array('text' => 'Город', 'class' => 'city-field'), 'city_string');
			$objForm->submitButton(array('value' => 'Сохранить','class' => 'gr-bg btn'), 'save');
		$objForm->close();
	}
	
	public function showOrdersList(array &$ordersArray = null, $ordersType) {
		Service_Debug::setDebug();
		echo '<div>';
			echo '<a class="variant' . ($ordersType == 'all' ? ' current' : '') . '" href="' . W_ABSPATH . 'profile/orders">Все</a>';
			echo '<a class="variant' . ($ordersType == 'wait' ? ' current' : '') . '" href="' . W_ABSPATH . 'profile/orders?opt=wait">Ожидаемые</a>';
			echo '<a class="variant' . ($ordersType == 'execute' ? ' current' : '') . '" href="' . W_ABSPATH . 'profile/orders?opt=execute">Активные</a>';
			echo '<a class="variant' . ($ordersType == 'complite' ? ' current' : '') . '" href="' . W_ABSPATH . 'profile/orders?opt=complite">Выполненные</a>';
		echo '</div>';
		if ($ordersArray == null) echo 'Заказов нет';
		else {
			echo '<table class="essence-list orders-list">';
				echo '<tr>';
					echo '<td>';
						echo 'Номер заказа';
					echo '</td>';
					echo '<td>';
						echo 'Откуда';
					echo '</td>';
					echo '<td>';
						echo 'Куда';
					echo '</td>';
					echo '<td>';
						echo 'Опубликован';
					echo '</td>';
				echo '</tr>';
				foreach ($ordersArray as $orderArray) {
					echo '<tr id="' . $orderArray['ID_order'] . '" class="order">';
						echo '<td>';
							echo '<a href="' . W_ABSPATH . 'profile/orders/' . $orderArray['ID_order'] . '">№ ' . $orderArray['ID_order'] . '</a>';
						echo '</td>';
						echo '<td>';
							echo $orderArray['from'];
						echo '</td>';
						echo '<td>';
							echo $orderArray['to'];
						echo '</td>';
						echo '<td>';
							echo Service_Date::changeDateFormat($orderArray['created_at'], 'Y-m-d H-i-s', 'j R Y');
						echo '</td>';
					echo '</tr>';
				}
			echo '</table>';
		}
	}
	
	/**
	 * Выводит страницу профайла "Расходы"/"Прибыль"
	 * 
	 * @param User_User $objUser - объект текущего пользователя
	 * @param int $idDriver - id водителя, в случае, если текущий пользователь - водитель
	 * @pararm array $ordersArray - массив заказов, которые используеются для расчёт прибыли/расходов
	 */
	public function showMoneyPage($objUser, $idDriver, $ordersArray) {
		Service_Debug::setDebug();
		if(empty($ordersArray)) echo $idDriver ? 'Прибыли пока нет' : 'Расходов пока нет';
		else {
			echo '<div class="orders-money' . ($idDriver ? '' : ' cust') . '">';
				$lastYear = '';
				$lastMonth = '';
				foreach ($ordersArray as $orderArray) {
					$dateArr = explode('-', $orderArray['date']);
					if($dateArr[2] != $lastYear) {
						if($lastMonth != '' && $lastMonth != $dateArr[1]) echo '</div></div></div>'; // закрываем последние блоки table ,".month-stat", ".year-res"
						echo '<div class="year-res">';
							echo '<div class="top">';
								echo '<div class="year">' . $dateArr[2] . '</div>';
								echo '<div class="year-summs r-fl">';
									echo '<div class="year-summ-fact"></div>';
									echo '<div class="year-summ-wait"></div>';
								echo '</div>';
								echo '<div class="clear"></div>';
							echo '</div>';
						$lastYear = $dateArr[2];
						$lastMonth = '';
					}
					if($dateArr[1] != $lastMonth) {
						echo  ($lastMonth != '' ? '</div></div>' : '') . '<div class="month-stat">';
							echo '<div class="month-top">';
								echo '<div class="month">' . Service_Date::getMonth($dateArr[1], true) . '</div>';
									echo '<div class="month-summs r-fl">';
										echo '<div class="month-summ-fact"></div>';
										echo '<div class="month-summ-wait"></div>';
									echo '</div>';
									echo '<div class="clear"></div>';
								echo '</div>';
							echo '<div class="orders">';
						$lastMonth = $dateArr[1];
					}
					echo '<div class="order' . (!$orderArray['loaded'] || !$orderArray['unloaded'] ? ' wait' : '') . '">';
						echo '<div class="order-id">';
							echo '<a href="' . W_ABSPATH . 'profile/orders/' . $orderArray['ID_order'] . '">Заказ  №' . $orderArray['ID_order'] . '</a>'; 
						echo '</div>';
						echo '<div class="from-to">' . $orderArray['from'] . ' - ' . $orderArray['to'] . '</div>';
						echo '<div class="money">' . ($idDriver ? 'Прибыль: ' : 'Расход: ') . '<span>' . $orderArray['price'] . '</span></div>';
					echo '</div>';
					
				}
				echo '</div></div></div>'; // закрываем последние блоки table ,".month-stat", ".year-res"
			echo '</div>';
		}
	}
	
	
	/**
	 * Выводит страницу редактирования заказа 
	 * 
	 * @param Booking $objBooking - Объект бронирования
	 */
	public function showChangeOrder(Booking $objBooking) {
		Service_Debug::setDebug();
		echo '<div class="change-order">';
			if ($objBooking->getField('is_cancelled') || $objBooking->getField('b_com_status') == 'C') {
				echo '<b>' . Service_Translate::getText('Бронирование отменено') . '</b>';
			}
			else { 
				echo '<ul class="profile-order-menu">';
					echo '<li><a href="' . View_Base::getLanguageUrl(W_ABSPATH . 'profile/orders/' . $objBooking->id . '/change/dates/') . '">' . Service_Translate::getText('Изменить даты') . '</a></li>';
					if ($objBooking->getField('payment_type') == 'Credit card') echo '<li><a href="' . W_HTTPS_PATH . 'profile/orders/' . $objBooking->id . '/change/card/">' . Service_Translate::getText('Изменить данные о кредитной карте') . '</a></li>';
					echo '<li><a href="' . View_Base::getLanguageUrl(W_ABSPATH . 'profile/orders/' . $objBooking->id . '/change/other/') . '">' . Service_Translate::getText('Внести другие изменения') . '</a></li>';
				echo '</ul>';
			}
		echo '</div>';
	}
	
	/**
	 * Выводит страницу редактирования дат заказа 
	 * 
	 * @param BookingChange $objBookingChange - Объект изменений в бронировании
	 * @param string $dateArr - Дата заезда в формате 30/12/2012 
	 * @param string $dateDep - Дата выезда в формате 31/12/2012 
	 */
	public function showChangeOrderDates(BookingChange $objBookingChange, $dateArr, $dateDep) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'viewFormType' => 'div',
		  'showAfterNameSymbols' => false,
			'id' => 'profile-change-dates-form', 
			'leftWidth' => 220,
			'js' => 'onsubmit="return confirm(\'' . Service_Translate::getText('Вы уверены?') . '\');"',
		), $objBookingChange);		
							
		echo '<div class="profile-order-change">';
			echo '<h2>' . Service_Translate::getText('Изменить даты') . '</h2>';
			$objForm->show();
				echo '<input type="text" id="calendarText" readonly class="calendar-text inputClass" value="' . ($dateArr && $dateDep ? Service_Date::getRusDate($dateArr) . ' - ' . Service_Date::getRusDate($dateDep) : '') . '" />';
				$objForm->hiddenField(array('value' => $dateArr, 'class' => 'date_arr'), 'date_arr');
				$objForm->hiddenField(array('value' => $dateDep, 'class' => 'date_dep'), 'date_dep');
				$objForm->textareaField(array('text' =>  Service_Translate::getText('Комментарий')), 'comment');
				$objForm->submitButton(array(), 'save');
			$objForm->close();
		echo '</div>';
	}
	/**
	 * Выводит страницу редактирования кредитной карточки для заказа 
	 * 
	 * @param BookingChange $objBookingChange - Объект изменений в бронировании
	 * @param array $arrCreditCards - Массив кредитных карт доступных в отеле
	 */
	public function showChangeOrderCard(BookingChange $objBookingChange, $arrCreditCards) {
		Service_Debug::setDebug();
		$objViewBlock = new View_Block();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'viewFormType' => 'div',
		  'showAfterNameSymbols' => false,
			'id' => 'profile-change-credit-card-form', 
			'leftWidth' => 220,
		), $objBookingChange);		
		$objForm->show();
		echo '<div class="profile-order-change">';
			echo '<h2>' . Service_Translate::getText('Изменение бронирования') . '</h2>';
			$objViewBlock->showCreditCardTypeForm($objForm, $arrCreditCards); 
			echo '<div class="clear"></div>';
			$objViewBlock->showCreditCardForm($objForm);
			$objForm->textareaField(array('text' =>  Service_Translate::getText('Комментарий')), 'comment');
			$objForm->submitButton(array(), 'save');	
		echo '</div>';
		$objForm->close();
	}
	/**
	 * Выводит страницу запроса на изменение заказа 
	 * 
	 * @param BookingChange $objBookingChange - Объект изменений в бронировании
	 */
	public function showChangeOrderOther(BookingChange $objBookingChange) {
		Service_Debug::setDebug();
		$objForm = new Form_ViewForm(array(
			'errorIfExists' => true, 
			'viewFormType' => 'div',
		  'showAfterNameSymbols' => false,
			'id' => 'profile-change-other-form', 
			'leftWidth' => 220,
		), $objBookingChange);		
		$objForm->show();
		echo '<div class="profile-order-change">';
			echo '<h2>' . Service_Translate::getText('Изменение бронирования') . '</h2>'; 
			$objForm->textareaField(array('text' =>  Service_Translate::getText('Запрос на изменение'), 'class' => 'standardTextarea vRequired'), 'comment');
			$objForm->submitButton(array(), 'save');	
		echo '</div>';
		$objForm->close();
	}
}
?>